昨天我們學了方法,知道怎麼避免重複程式碼。
今天我們要更進一步,開始進入 OOP(物件導向程式設計) 的世界。
可以這樣簡單理解類別(Class)和物件(Object)的差異:
封裝 (Encapsulation)
把資料與邏輯包起來,避免外部亂改。
public class Account
{
private decimal _balance;
public void Deposit(decimal amount) { _balance += amount; }
public decimal GetBalance() { return _balance; }
}
繼承 (Inheritance)
子類別可以擴充父類別功能。
public class Stock
{
public string Symbol { get; set; }
public decimal Price { get; set; }
}
public class StockProfile : Stock
{
public string Industry { get; set; }
}
多型 (Polymorphism)
相同方法,不同實作。
public abstract class TaxCalculator
{
public abstract decimal Calc(decimal amount);
}
public class TwTax : TaxCalculator
{
public override decimal Calc(decimal amount) { return amount * 0.003m; }
}
控制類別或成員誰能用:
string symbol1 = "2330"; decimal price1 = 1265m; int volume1 = 1000;
string symbol2 = "2303"; decimal price2 = 45.7m; int volume2 = 200;
decimal amount1 = price1 * volume1;
decimal amount2 = price2 * volume2;
Console.WriteLine($"{symbol1} 成交金額 {amount1}");
Console.WriteLine($"{symbol2} 成交金額 {amount2}");
👉 資料分散,邏輯重複,不好維護。
class Program
{
static void Main()
{
var s1 = new Stock("2330", 1265m, 1000);
var s2 = new Stock("2303", 45.7m, 200);
Console.WriteLine($"{s1.Symbol} 成交金額 {s1.Amount()}");
Console.WriteLine($"{s2.Symbol} 成交金額 {s2.Amount()}");
}
}
👉 清楚、好維護,還能持續擴充。
今天我們學會了: